03 创建django项目与django必会三剑客

528次阅读
没有评论

共计 4942 个字符,预计需要花费 13 分钟才能阅读完成。

一.django 框架注意事项

  • 计算机名不能有中文(老外写的, 不支持中文)(我的电脑 ---> 属性 ----> 计算机名进行设置)
  • 项目名和 py 文件最好不要使用中文
  • 一个 pycharm 最好只打开一个项目
  • python 解释器最好使用 3.4~3.6 之间版本(否则项目出错, 下面讲解排错)
  • django 版本问题 1.x、2.x、3.x, 一般选 1.x 版本

二.django 版本问题

  • LTS: 全称 Long Term Support 官方维护的版本, 也就是稳定版本

  • 版本推荐: 1.8(2015) 1.11(2018) 2.2(2019)

03 创建 django 项目与 django 必会三剑客

3.x 版本基本不用, 可以直接忽略

1.x 版本与 2.x 版本相差不大

公司一般使用 1.8 与 1.11 版本, 有一些 django 项目使用 2.0 版本

三. 命令行模式下载并创建 django 项目

1.django 下载

pip3 install django==1.11.1
# 下载太慢导致失败可以更换下载源 :
豆瓣源 : http://pypi.douban.com/simple/
清华源: https://pypi.tuna.tsinghua.edu.cn/simple
使用方法 : pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.12

2. 测试是否安装成功

django-admin  # 出现下图情况说明安装成功

03 创建 django 项目与 django 必会三剑客

3. 创建 django 项目以及 app

🍅创建 "django" 项目
django-admin startproject [项目名]

🍅'cd' 到项目下
cd [项目文件夹]

🍅启动 'django' 项目
python3 manage.py runserver [ip]:[port]  # 后面可以指定 ip+port, 不指定默认本地回环
🔰ps: 这里如果 Python 解释器版本不兼容可能会报错, 到你 Python 解释器下的文件夹删掉一个逗号即可
🔰'[盘符]:\Python38\lib\site-packages\django\contrib\admin\widgets.py',152 行后面的逗号删除

🍅创建 'app'
python3 manage.py startapp [app 名字]
  • 创建演示

03 创建 django 项目与 django 必会三剑客

03 创建 django 项目与 django 必会三剑客

03 创建 django 项目与 django 必会三剑客

四. 使用 Pycharm 创建 django 项目

1.pycharm 主界面

  • File----->New Project

03 创建 django 项目与 django 必会三剑客

2. 启动 django 项目

03 创建 django 项目与 django 必会三剑客

  • 可能出现的报错信息

03 创建 django 项目与 django 必会三剑客

03 创建 django 项目与 django 必会三剑客

03 创建 django 项目与 django 必会三剑客

03 创建 django 项目与 django 必会三剑客

03 创建 django 项目与 django 必会三剑客

3. 创建新的 app

  • Tools----->Run manage.py Task...(快捷键 : Ctrl+Alt+r)

03 创建 django 项目与 django 必会三剑客

03 创建 django 项目与 django 必会三剑客

4. 修改 ip 以及 port

  • 点击右上角绿色三角形左边的项目名大写按钮 ----->Edit Configurations...

03 创建 django 项目与 django 必会三剑客

03 创建 django 项目与 django 必会三剑客

五.app 解释与注册

1. 什么是 app

  • django 是一款专门开发 app(应用)的 web 框架

  • 我们创建一个 django 项目之后类似于创建了一所大学(空壳子, 提供资源的)

  • 而 app 就类似于大学里面的各个分院,每个分院都可以有自己独立的各项功能职责

python
比如写一个淘宝商城:
订单相关
用户信息
交易相关...
django 就是为各个 app 提供资源的

  • 一个 app 就是一个独立的功能模块

2.app 的注册

  • 我们创建的 app 一定得去 setting.py 文件中注册才能生效
  • 上面我们最开始使用 pycharm 自动创建了第一个应用 app01, pycharm 也会自动帮我们注册
  • 后边我们手动创建了一个应用 app02, 就需要我们去注册了

03 创建 django 项目与 django 必会三剑客

六. 目录结构

1.django 目录结构

mysite/                       # 项目名
    |---- mysite 文件夹         # 项目同名文件夹
        |---- __init__.py
        |---- settings.py      # django 暴露给用户可以配置的配置文件
        |---- urls.py          # 路由与视图函数 (可以是函数也可是类) 对应关系(路由层)
        |---- wsgi.py          # 忽略,wsgiref 相关
    |---- app01 文件夹           # 应用(可以有多个)
        |---- __init__.py
        |---- migrations 文件夹  # 存储数据库记录相关(类似于操作日志)
            |---- __init__.py
        |---- admin.py          # django 后台管理
        |---- apps.py           # 注册 app
        |---- models.py         # 数据库相关(模型层)
        |---- tests.py          # 测试文件
        |---- views.py          # 视图函数(视图层)
    |---- db.sqlite3           # django 自带的小型数据库
    |---- manage.py            # 管理文件, django 入口文件
    |---- templates             # 模板文件(存储 html 文件)(模板层)

03 创建 django 项目与 django 必会三剑客

2.setting.py 文件配置说明 (列举重要部分说明)

  • DEBUG

定义为一个布尔值,表示开启 / 禁用当前项目的调试模式,

如果 DEBUG 为 True,当应用程序抛出未捕获异常时,Django 将显示详细的错误页面

如果要发布项目上时,需将其设置为 False,以免暴露某些与产品相关的敏感参数

  • ALLOWED_HOSTS

允许访问的主机, 默认为[],对于初学者来说可以不必理会

在发布产品时才会用到,上线之后可以写 *, 表示所有

  • INSTALLED_APPS

表示为需要针对全部项目进行编辑的设置项,该设置项通知 Django 针对当前站点的哪一个应用程序处于活动状态

默认状态下,Django 包含了以下 6 个应用程序

'django.contrib.admin',         # 管理站点
'django.contrib.auth',          # 验证框架
'django.contrib.contenttypes',  # 处理内容类型的框架
'django.contrib.sessions',      # 会话框架
'django.contrib.messages',      # 消息机制框架
'django.contrib.staticfiles',   # 管理静态文件框架

03 创建 django 项目与 django 必会三剑客

  • MIDDLEWARE

表示中间件列表,在后期使用表单时,如果是:post 请求,需加上{% csrf_token %}

  • DATABASES

表示一个字典,其中涵盖了应用程序所使用的全部数据库设置。默认采用的是 SQLite3 数据库

  • ROOT_URLCONF

表示 pytho 模块,其中定义了应用程序的根 URL 路径

  • LANGUAGE_CODE

针对当前 Django 站点定义了默认的代码语言

  • USE_TZ

通知 Django 启用 / 禁用时区支持

Django 提供了基于时区的日期显示, 当创建一个新项目时,该设置项将定义为 True

七. 命令行与 pycharm 创建 django 项目的不同之处

1.templates 文件配置的不同

  • 命令行创建不会自动创建 templates 模压板文件夹
  • 命令行也不会自动在配置文件中配置模板文件的文件夹路径
1. 需要你新建一个 "templates" 文件夹
2. 去到 "setting.py" 文件下配置 "templates" 的路径
    - 🔰未配置前:
        TEMPLATES = [
            {
                'BACKEND': 'django.template.backends.django.DjangoTemplates',
                'DIRS': [],  # 未配置 DIRS 为空
    - 🔰配置后:
        TEMPLATES = [
            {
                'BACKEND': 'django.template.backends.django.DjangoTemplates',
                'DIRS': [os.path.join(BASE_DIR,'templates')],  # 添加路径拼接

03 创建 django 项目与 django 必会三剑客

2. 创建 app 时的不同

  • 命令行创建 app 需要去 setting.py 文件中去注册(方法上面已经演示过)
# 全写(例:app01)
'app01.apps.App01Config'

# 简写
'app01'
  • pycharm 中创建 app
# 同项目一起创建的 app, pycharm 会自动帮你注册

# 后面创建的 app 都需要自己手动去 setting.py 文件中去注册

八.django 必会三剑客

1. 三剑客

  • HttpResponse (HTTP 请求)
  • render (渲染)
  • redirect (重定向)

2. 三剑客介绍

from django.shortcuts import HttpResponse,render,redirect  # 将三剑客统统导入
  • HttpResponse : 返回字符串类型的数据
def login(request):
    return HttpResponse('欢迎登入该网站')
  • render : 返回 HTML 文件, 支持向 HTML 文件中传参并使用模板语法(动态 HTML 页面)
# 视图函数必须接收一个参数 request
def login(request):  
    return render(request,'login.html')

# 动态页面两种传值方式
# 🔰1. 使用字典的形式进行传值 : 更加精确, 节省资源
def login(request):
    user_info = {"name":"shawn","age":23}
    return render(request,'index.html',{"data":user_info,"datetime":"2021.03"})

# 🔰2. 使用 locals, 会将所在名称空间中所有的名字全部传递给 HTML 页面调用 : 当想要的数据特别多的时候推荐使用
def login(request):
    return render(request,"login.html",locals())

变量名传入到 HTML 页面中如何使用? 手撸 WEB 框架 已经介绍过了, 可以传送去看看

  • redirect : 重定向
# 返回他人的网址重定向
def login(request):
    return redirect("https://www.baidu.com")

# 返回自己的网址重定向
def login(request):
    return redirect("/index")

3. 示例

  • views.py 文件
from django.shortcuts import render, HttpResponse, redirect


def http_response(request):
    """
    HttpResponse 内部传入一个字符串参数,返回给浏览器
    :param request: 一个请求相关的所有数据对象, 可以用点的方式取值
    :return:
    """
    return HttpResponse(f"Your response:{request.path_info}")


def render_func(request):
    """
    返回 html 页面(之前我们需要 open 代开文件, 这个不需要)
    :param request:
    :return:
    """
    return render(request, 'login.html')


def redirect_other(request):
    """
    重定向, 返回他人的网址
    :param request:
    :return:
    """
    return redirect('https://www.baidu.com')


def redirect_self(request):
    """
    重定向, 返回自己的网页
    :param request:
    :return:
    """
    return redirect('/home')


def home_html(request):
    return render(request, 'home.html')
  • urls.py 文件
from django.conf.urls import url
from django.contrib import admin
from app02.views import *

urlpatterns = [url(r'^admin/', admin.site.urls),
    url(r'^http_response/', http_response),
    url(r'^render_login/', render_func),
    url(r'^redirect_other/', redirect_other),
    url(r'^redirect_self/', redirect_self),
    url(r'^redirect_self/', redirect_self),
    url(r'^home_html/', home_html),
]
  • 访问网址

03 创建 django 项目与 django 必会三剑客

  • http_response : 返回字符串

03 创建 django 项目与 django 必会三剑客

  • render_func : 返回 HTML 页面

03 创建 django 项目与 django 必会三剑客

  • redirect_other : 重定向别人网址

03 创建 django 项目与 django 必会三剑客

  • redirect_self : 重定向自己网址

03 创建 django 项目与 django 必会三剑客

---end---

正文完
 
shawn
版权声明:本站原创文章,由 shawn 2023-06-16发表,共计4942字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)